<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

        .ht{
            text-align: center;
            color: cadetblue;
            font-family: 幼圆;
        }
        .tab{
            width: 500px;
            border: 5px solid cadetblue;
            margin: 0px auto;
            border-radius: 5px;
            font-family: 幼圆;
        }
        .ltr td{
            border: 1px solid  powderblue;

        }
        .ipt{
            border: 0px;
            width: 50%;

        }
        .btn1{
            border: 2px solid powderblue;
            border-radius: 4px;
            width:60px;
            background-color: antiquewhite;

        }

        .msg {
            color: gold;
        }

        .buttonContainer{
            text-align: center;
        }
    </style>

    <script>
        function checkUsername(){
            var usernameReg = /^[a-zA-Z0-9]{5,10}$/
            var usernameInput = document.getElementById("usernameInput")  
            var username = usernameInput.value  
            var usernameMsg = document.getElementById("usernameMsg")
            if(!usernameReg.test(username)){
                usernameMsg.innerText="格式有误"
                return false
            }

            /*
            * 1、响应乱码的问题
            * 2、响应信息格式不规范，处理方式不规范
            *       后端响应回来的信息当有一个统一的格式,前后端共同遵守
            *       响应一个JSON串
            *       {
            *           "code": "100/200/300/400/500" 业务状态码
            *           "message": "业务状态码的描述 补充说明"
            *           "data"：{} 本次响应的数据
            *           ......
            *       }
            * 3、校验不通过，无法阻止表单提交的问题
            * */

            // 发送ajax请求校验用户名是否被占用
            var request = new XMLHttpRequest();
            // if (window.XMLHttpRequest){
            //     request = new XMLHttpRequest();
            // }else {
            //     // 这步作用是啥，没明白
            //     request = new ActiveXObject("Microsoft.XMLHTTP");
            // }
            // request.readyState 有1,2,3,4四个状态，每改变一个状态，该函数都会执行一次
            request.onreadystatechange=function () {
                // request.readyState==4 代表请求结束,已经接收到响应结果
                // request.status==200 后端响应码是200
                if (request.readyState == 4 && request.status == 200){
                    // usernameMsg.innerText = request.responseText;
                        // 后端响应的JSON字符串转换为前端对象
                        var response = JSON.parse(request.responseText);
                        if (response.code != 200){
                            usernameMsg.innerText = "已注册";
                            // 这里无用，alax不能阻止表单的提交
                            return false;
                        }else {
                            usernameMsg.innerText = "OK";
                            return true;
                        }
                }

            }
            // 设置请求方式，请求路径，是否为异步请求
            request.open("GET", "/user/checkUsernameUsed?username="+username);
            // 发送请求
            request.send();

            // ajax为异步的时候，这种情况是不起作用的
            // usernameMsg.innerText="OK"
            // return true
        }


        function checkUserPwd(){
            var userPwdReg = /^\d{6}$/
            var userPwdInput = document.getElementById("userPwdInput")  
            var userPwd = userPwdInput.value  
            var userPwdMsg = document.getElementById("userPwdMsg")
            if(!userPwdReg.test(userPwd)){
                userPwdMsg.innerText="格式有误"
                return false
            } 
            userPwdMsg.innerText="OK"
            return true 
        }


        function checkReUserPwd(){
            var userPwdReg = /^\d{6}$/
            // 再次输入的密码的格式
            var reUserPwdInput = document.getElementById("reUserPwdInput")  
            var reUserPwd = reUserPwdInput.value 
            var reUserPwdMsg = document.getElementById("reUserPwdMsg")
            if(!userPwdReg.test(reUserPwd)){
                reUserPwdMsg.innerText="格式有误"
                return false
            } 
            // 获得上次密码,对比两次密码是否一致
            var userPwdInput = document.getElementById("userPwdInput")  
            var userPwd = userPwdInput.value  
            if(reUserPwd != userPwd){
                reUserPwdMsg.innerText="两次密码不一致"
                return false
            } 
            reUserPwdMsg.innerText="OK"
            return true 
        }


        function checkForm(){
            var flag1 = checkUsername()
            var flag2 = checkUserPwd()
            var flag3 = checkReUserPwd()

            return flag1 && flag2 && flag3
        }


    </script>


   
</head>
<body>
<h1 class="ht">欢迎使用日程管理系统</h1>
<h3 class="ht">请注册</h3>
<form method="post" action="/user/regist" onsubmit="return checkForm()">
    <table class="tab" cellspacing="0px">
        <tr class="ltr">
            <td>请输入账号</td>
            <td>
                <input class="ipt" id="usernameInput" type="text" name="username" onblur="checkUsername()">
                <span id="usernameMsg" class="msg"></span>
            </td>
        </tr>
        <tr class="ltr">
            <td>请输入密码</td>
            <td>
                <input class="ipt" id="userPwdInput" type="password" name="userPwd" onblur="checkUserPwd()">
                <span id="userPwdMsg" class="msg"></span>
            </td>
        </tr>
        <tr class="ltr">
            <td>确认密码</td>
            <td>
                <input class="ipt" id="reUserPwdInput" type="password" onblur="checkReUserPwd()">
                <span id="reUserPwdMsg" class="msg"></span>
            </td>
        </tr>
        <tr class="ltr">
            <td colspan="2" class="buttonContainer">
                <input class="btn1" type="submit" value="注册">
                <input class="btn1" type="reset" value="重置">
                <button class="btn1"><a  href="login.html">去登录</a></button>
            </td>
        </tr>
    </table>

</form>
</body>
</html>